/**
 * 定义了一个基础的Bean转换接口，用于在不同模型（DO, VO, Transfer）之间进行转换
 * 此接口定义了如何将数据对象（DO）转换为值对象（VO）或数据传输对象（Transfer），
 * 以及如何从VO或DTO转换回DO
 *
 * @param <DO> 数据对象类型
 * @param <VO> 值对象类型，必须继承自BaseVO
 * @param <Transfer> 数据传输对象类型，必须继承自BaseDTO
 */
package org.jeeasy.common.core.base.convert;

import java.util.Collection;

/**
 * 定义了需要实现的基本转换方法，包括DO到VO、DO到DTO、VO到DO和DTO到DO的转换
 * 此接口旨在提供一个统一的转换机制，以便在不同的数据表示形式之间进行无缝转换
 */
public interface BaseConverter<DO extends BaseDO<DO>, TRANSFER extends BaseTransfer<DO>> {

    /**
     * 将单个数据对象（DO）转换为值对象（TRANSFER）
     *
     * @param source 要转换的数据对象
     * @return 转换后的值对象
     */
    TRANSFER transfer(DO source);

    /**
     * 将数据对象（DO）集合转换为值对象（TRANSFER）集合
     *
     * @param source 数据对象集合
     * @return 转换后的值对象集合
     */
    Collection<TRANSFER> transfer(Collection<DO> source);

    ///**
    // * @param source
    // * @return
    // */
    //IPage<TRANSFER> transfer(IPage<DO> source);


    /**
     * 从单个值对象（TRANSFER）转换回数据对象（DO）
     *
     * @param source 要转换的值对象
     * @return 转换后的数据对象
     */
    DO toDO(TRANSFER source);

    /**
     * 从值对象（TRANSFER）集合转换回数据对象（DO）集合
     *
     * @param source 值对象集合
     * @return 转换后的数据对象集合
     */
    Collection<DO> toDO(Collection<TRANSFER> source);

    ///**
    // * @param source
    // * @return
    // */
    //IPage<DO> toDO(IPage<TRANSFER> source);

}
